package program;

import ai.basic.RandomAIFactory;
import ai.bruteForceSearch.BruteForceSearchAIFactory;
import ai.complex_path_finding.AStarAIFactory;
import ai.minimax.MiniMaxAIFactory;

import hexgame.*;
import hexui.*;

public class Program {

	public static final int PORT = 7600;
	
	public static void main(String[] args) {
		
		// Ensure any UI we display looks like the native UI
		NativeUI.setNativeLookAndFeel();
		
		// Register any methods to play the game
		PlayMethods.registerMethod("Real Player (UI)", new LocalPlayerFactory());
		PlayMethods.registerMethod("Random position AI", new RandomAIFactory());
		PlayMethods.registerMethod("Brute Force AI", new BruteForceSearchAIFactory());
		PlayMethods.registerMethod("A* AI", new AStarAIFactory());
		PlayMethods.registerMethod("MiniMax Depth5", new MiniMaxAIFactory(5, false));
		PlayMethods.registerMethod("MiniMax Depth5 Bridging", new MiniMaxAIFactory(5, true));
		
		@SuppressWarnings("unused")
		GameManager games = new GameManager();
		
		@SuppressWarnings("unused")
		GameConnectionWindow requestWindow = new GameConnectionWindow(PORT);
		
	}
}
